package com.example.mybatisdemo.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.mybatisdemo.entity.SysRole;
import com.example.mybatisdemo.entity.SysUser;

/**
 * @Entity com.example.mybatisdemo.entity.SysUser
 */
public interface SysUserMapper extends BaseMapper<SysUser>
{
	// 只有一个参数，mybatis并不关心这个参数叫什么，会直接拿来使用，所以单个参数没必要使用 @Param注解
	SysUser selectOneById(@Param("id") Integer id);

	List<SysUser> selectAll();

	List<SysRole> selectRolesByUserId(@Param("id") Integer id);

	long insert2(SysUser sysUser);

	SysUser selectByUser(SysUser sysUser);

	SysUser selectUserByIdOrUserName(SysUser sysUser);

	// 当参数类型集合时，mybatis 会把参数转换为Map ，并默认添加一个key = collection， 当参数是 list 时 key = list， 所以 collection = 'list' 即可取出参数，进行遍历
	// 当参数 是 数组时 ， collection = 'array'
	// 最推荐的还是使用 @Param 给参数自定义 key名， collection = '注解自定义名'；练，
	List<SysUser> selectByIdList(List<Long> idList);

	int insertList(List<SysUser> userList);

	int updateByMap(Map<String, Object> map);

	SysUser selectUserAndRoleById(Long id);

	SysUser selectUserAndRoleById2(Long id);

	List<SysUser> selectAllUserAndRolesAndPrivileges();
}




